There is a growing trend to deploy programmable microprocessors in system designs where traditionally fixed function integrated circuits were used. This is mainly driven by the flexibility of software compared to hardwired solutions.
For a given application domain, however, the general purpose instruction set of the processor might not deliver sufficient computational performance to tackle the problem. To overcome this limitation, dedicated co-processors are used in conjunction with the general purpose microprocessor to accelerate domain specific tasks, such as signal processing and streaming application tasks. From a programming perspective, the co-processor appears as one or more instructions that perform the domain specific functions.
This solution, however, limits the suitability of the system to the domains that have been foreseen at design-time and thus included in the capabilities of the co-processor. After production, the chip might not perform well if re-targeted to a different domain, thus loosing some of the advantages as a general purpose processor.